package com.hmall.api.client;

import com.hmall.api.client.fallback.ItemClientFallback;
import com.hmall.api.config.DefaultFeignConfig;
import com.hmall.api.dto.ItemDTO;
import com.hmall.api.dto.OrderDetailDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.Collection;
import java.util.List;

@FeignClient(value = "item-service", // 声明服务名称
        configuration = DefaultFeignConfig.class,
        fallbackFactory = ItemClientFallback.class)
public interface ItemClient {

    // 使用这些注解就可以使用OpenFeign来动态代理的生成原来使用RestTemplate来远程调用(非Http方式)的方法
    @GetMapping("/items")// 声明请求方式与路径
    List<ItemDTO> queryItemByIds(@RequestParam("ids") Collection<Long> ids);

    @PutMapping
    ItemDTO queryItemById(@RequestParam("id") Long id);

    @DeleteMapping("/items/stock/deduct")
    void deductStock(@RequestBody List<OrderDetailDTO> ids);

    @PutMapping("/stock/restore")
    void restoreStock(@RequestBody List<OrderDetailDTO> items);
}
